import * as Utils from '@/utils/util'
import getDataForDB from '@/api/qsbBusinessManagement'

const statusList ={4:'未知',5:'待提交',10:'待审核',20:'审核拒绝',23:'待发布',24:'待确认',25:'待完善资料', 26:"待认证",30:'待支付',40:'支付失败',50:'办理中',60:'办理完成',70:'已取消',80:'办理失败'}
// {
//   10: '待审核', 20: '审核驳回', 25: '待完善', 30: '待支付', 40: '支付失败', 50: '办理中',
//   60: '已完成', 70: '已取消'
// }
//  0 待提交 1 待审核 2 审核驳回 3 待支付 4 信息待完善 5 办理中 6 办理完成 7 办理失败


// 1待审核 2审核驳回 3待支付 4信息待完善 5办理中 6办理完成 7办理失败
/**
 * 电子签章
 */
// const dzqzStateList = {
//   1:'待审核', 2:'审核驳回', 3:'待支付', 4:'待完善', 5:'办理中', 6:'已完成', 7:'办理失败'
// }
// const gssbStateList = {
//   0:'待提交', 1:'待审核', 2:'审核驳回', 3:'待支付', 4:'待完善', 5:'办理中', 6:'已完成', 7:'办理失败'
// }

/**
 * 从接口获取数据
 * @param {*} key
 * @param {*} param
 * @returns
 */
const getData = async (key, param,pageSelf) => {
  let res = {}
  try {
    const res_ = await getDataForDB(key, param)
    if (res_.code == 200) {
      res = res_.result
    } else {
      res = {message:res_.message}
      pageSelf.$message.warning(res_.message)
    }
  } catch (error) {
    console.log(`接口${key}报错，具体原因如下：`, error);
  }
  return res
}

/**
 * 根据接口返回来的的数据状态控制  审批记录  上传文件  支付订单  的显示隐藏
 * @param {*} dbData
 */
const showCardListState = (pageSelf, dbData) => {
  const { needFile, needPay, status, fileList, electronicSignature,taxDeclarationEntVo } = dbData || {}
  // console.log('根据接口返回来的的数据状态控制 showCardListState ==>',pageSelf, dbData);
  pageSelf.showCardList.spjl = true
  pageSelf.showCardList.upload = false
  pageSelf.showCardList.payForm = false
  pageSelf.showCardList.uploadReadonly = false
  let status_ = status || electronicSignature&& electronicSignature.status || taxDeclarationEntVo && taxDeclarationEntVo.status  || ''
  // console.log('showCardListState===>',status_,dbData);
  // status_ = 30
  // status 3 支付 4 完善资料  电子签章中的状态  electronicSignature

  // && fileList.length>0
  if(fileList&& fileList.length>0 ){
    pageSelf.showCardList.upload = true
    // fileName  url
    const tempArr = []
    fileList.forEach(item=>{
      tempArr.push({ type: '1', tips: '支持pdf及图片格式文件，每个文件限制在60M内', fileInfo: { name: item.fileName, url: item.url } },)
    })
    pageSelf.showCardList.uploadData = tempArr
  }
  if (status_ == 25 || status_==4) {
    pageSelf.showCardList.upload = true
    pageSelf.showCardList.uploadReadonly = true
  }else{
    pageSelf.showCardList.uploadReadonly = false
  }
  if (status_ == 30 || status_==3) {
    pageSelf.showCardList.payForm = true
  }else{
    pageSelf.showCardList.payForm = false
  }
}
/**
 * 获取页面详细信息 事件
 */
const actionList = {
  "银行开户": async (pageSelf, entId,flowNo) => {
    const res = await getData('企业端获取银行开户信息', { id:flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
  "税务变更":  async (pageSelf, entId,flowNo) => {
    const res = await getData('税务订单详情', { flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
  "邮寄资料":  async (pageSelf, entId,flowNo) => {
    console.log('web端企业查询邮寄资料详情 参数===>',entId,flowNo,{ flowNo });
    const res = await getData('web端企业查询邮寄资料详情', { id:flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
  "注册信息变更":  async (pageSelf, entId,flowNo) => {
    console.log('工商注册变更信息获取详情 参数===>',entId,flowNo,{ flowNo });
    const res = await getData('工商注册变更信息获取详情', { flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
  "企业服务模式变更":   async (pageSelf, entId,flowNo) => {
    console.log('企业服务模式变更 参数===>',entId,flowNo,{ flowNo });
    const res = await getData('服务模式变更详情', { flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
  "个税申报":  async (pageSelf, entId,flowNo,id) => {
    console.log('查询企业信息及个税申报详情 参数===>',entId,flowNo,{ flowNo });
    const res = await getData('查询企业信息及个税申报详情', { id:flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    // res && (pageSelf.TaskStatus = gssbStateList[res.taxDeclarationEntVo&&res.taxDeclarationEntVo.status])
    return res
  },
  "企业注销":   async (pageSelf, entId,flowNo,id) => {
    const res = await getData('企业注销,管理端获取详情', { id:flowNo },pageSelf)
    console.log('企业注销,管理端获取详情 参数===>',entId,flowNo,{ flowNo },res);
    pageSelf.pageInfo.dbData = res
    res && (pageSelf.TaskStatus = statusList[res.status])
    // res && (pageSelf.TaskStatus = gssbStateList[res.taxDeclarationEntVo&&res.taxDeclarationEntVo.status])
    return res
  },
  "税务申报": async (pageSelf, entId,flowNo,id) => {
    console.log('查询企业信息及税务申报详情 参数===>',entId,flowNo,{ flowNo });
    const res = await getData('查询企业信息及税务申报详情', { id:flowNo },pageSelf)
    // res.status = 5
    pageSelf.pageInfo.dbData = res
    console.log('查询企业信息及税务申报详情 参数 1===>',res);
    res && (pageSelf.TaskStatus = statusList[res.status])
    // res && (pageSelf.TaskStatus = gssbStateList[res.taxDeclarationEntVo&&res.taxDeclarationEntVo.status])
    return res
  },
  "电子签章":  async (pageSelf, entId, flowNo) => {
    const res = await getData('查询企业信息及电子签章详情', { id:flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    // res && res.electronicSignature &&  (pageSelf.TaskStatus = dzqzStateList[res.electronicSignature.status])
    res && res.electronicSignature &&  (pageSelf.TaskStatus = statusList[res.electronicSignature.status])
    return res
  },
  "增值业务":  async (pageSelf, entId, flowNo) => {
    const res = await getData('增值业务订单详情', { flowNo:flowNo },pageSelf)
    pageSelf.pageInfo.dbData = res
    res &&  (pageSelf.TaskStatus = statusList[res.status])
    return res
  },
}

/**
 * 业务办理进度 中待支付事件
 * @param {*} pageSelf
 * @param {*} orderNo
 */
const ToBePaid = (pageSelf,orderNo)=>{
  const key = "BusinessProcessingProgress"
  Utils.Storage.set(key, { orderNo: [orderNo] })
  pageSelf.$router.push({
    path: '/myAccount/accountManage',
    query: {
      po: key
    }
  });
}

/**
 * 公共用户保存上传资料的方法
 * @param {*} pageSelf
 * @param {*} dataInfo
 */
const saveFileinfo = async (pageSelf,dataInfo)=>{
  const resFiles = pageSelf.$refs['bpp_uf'].getData()
  const param = {
    "fileList": [
      // {
      //   "fileName": "",
      //   "fileUrl": ""
      // }
    ],
    "flowCode": dataInfo.data.flowCode,
    "flowNo": dataInfo.data.flowNo
  }

  resFiles.forEach(item => {
    param.fileList.push({fileName:item.name,fileUrl:item.url})
  });
  const res = await getDataForDB('业务办理上传资料', param)
  console.log('业务办理上传资料===>',res,param);
  if(res.success){
    pageSelf.$message.success('保存成功')
    pageSelf.$router.go(0)
  }else{
    pageSelf.$message.warning(res.message||'文件保存失败')
  }
}


/**
 * 业务办理进度 中的事件
 */
const actionList_bppi = {
  "银行开户": async (pageSelf, btnName, dataInfo, dbData) => {
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      // const resFiles = pageSelf.$refs['bpp_uf'].getData()
      // console.log('掉用上传接口保存文件===?', resFiles);
      // pageSelf.$message.info('掉用上传接口保存文件')
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      // 调用支付信息
      ToBePaid(pageSelf,orderNo)
    }
  },
  "税务变更":  async (pageSelf, btnName, dataInfo, dbData) => {
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)

      // console.log('掉用上传接口保存文件===?', resFiles, dataInfo, dbData);
      // pageSelf.$message.info('掉用上传接口保存文件')
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      // 调用支付信息
      ToBePaid(pageSelf,orderNo)
    }
  },
  "邮寄资料": async (pageSelf, btnName, dataInfo, dbData) => {
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)

      // console.log('掉用上传接口保存文件===?', resFiles, dataInfo, dbData);
      // pageSelf.$message.info('掉用上传接口保存文件')
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      // 调用支付信息
      ToBePaid(pageSelf,orderNo)
    }
  },
  "企业服务模式变更": async (pageSelf, btnName, dataInfo, dbData) => {
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)

      // console.log('掉用上传接口保存文件===?', resFiles, dataInfo, dbData);
      // pageSelf.$message.info('掉用上传接口保存文件')
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      // 调用支付信息
      ToBePaid(pageSelf,orderNo)
    }
  },
  "税务申报": async (pageSelf, btnName, dataInfo, dbData) => {
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)

      // console.log('掉用上传接口保存文件===?', resFiles, dataInfo, dbData);
      // pageSelf.$message.info('掉用上传接口保存文件')
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      // 调用支付信息
      ToBePaid(pageSelf,orderNo)
    }
  },
  "电子签章": async (pageSelf, btnName, dataInfo, dbData) => {
    // 业务反馈不需要 上传资料   和  待支付 场景
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      ToBePaid(pageSelf,orderNo)
    }
  },
  "注册信息变更": async (pageSelf, btnName, dataInfo, dbData) => {
    // 业务反馈不需要 上传资料   和  待支付 场景
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      ToBePaid(pageSelf,orderNo)
    }
  },
  "个税申报": async (pageSelf, btnName, dataInfo, dbData) => {
    // 业务反馈不需要 上传资料   和  待支付 场景
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      ToBePaid(pageSelf,orderNo)
    }
  },
  "企业注销": async (pageSelf, btnName, dataInfo, dbData) => {
    // 业务反馈不需要 上传资料   和  待支付 场景
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      ToBePaid(pageSelf,orderNo)
    }
  },
  "增值业务": async (pageSelf, btnName, dataInfo, dbData) => {
    // 业务反馈不需要 上传资料   和  待支付 场景
    if (btnName === '1') { }
    if (btnName === '2') {
      // 只上传资料
      // 获取上传的文件信息
      saveFileinfo(pageSelf,dataInfo)
    }
    if (btnName === '3') {
      const orderNo = dbData && dbData.orderNo || ''
      ToBePaid(pageSelf,orderNo)
    }
  },

}
/**
 * 业务办理进度 中的事件
 * @param {*} pageSelf
 * @param  {...any} args
 */
const BusinessProcessingProgressInfo = (pageSelf, typeName, ...args) => {
  actionList_bppi[typeName](pageSelf, ...args)
}

/**
 * 获取页面详细信息
 * @param {*} pageSelf
 * @param {*} pageName
 * @param {*} entId
 */
const getDataForPageName = (pageSelf, pageName, entId,flowNo) => {
  actionList[pageName] && actionList[pageName](pageSelf, entId,flowNo)
}

/**
 * 获取订单金额
 */
const getBePaidAmount = async (pageSelf, orderNo)=>{
  const res = await getData('根据订单编号获取待支付金额',{orderNo:orderNo},pageSelf)
  pageSelf.orderAmount= Utils.conversionElement(res.amount)
}


const pageEvent = {
  getDataForPageName,
  showCardListState,
  BusinessProcessingProgressInfo,
  getBePaidAmount
}

export default (type, pageSelf, ...args) => {
  return pageEvent[type](pageSelf, ...args)
}
